package model

import (
	"fmt"
	log "github.com/sirupsen/logrus"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"myginblog/utils"
	"time"
)

var db *gorm.DB
var err error

func InitDb() {
	switch utils.Db {
	case "mysql":
		var dsn = fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
			utils.DbUser,
			utils.DbPassWord,
			utils.DbHost,
			utils.DbPort,
			utils.DbName)
		db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
		if err != nil {
			log.Error("Failed to connect to the database. Check the parameters:", err)
			return
		}
		break
	default:
		panic(fmt.Sprintf("unknown database:%s", utils.Db))
	}
	s, err := db.DB()
	if err != nil {
		log.Error(err)
		return
	}

	//	设置连接池中最大闲置连接数
	s.SetMaxIdleConns(10)

	//	设置数据库最大连接数量
	s.SetMaxOpenConns(100)

	//	设置连接最大可复用时间
	s.SetConnMaxLifetime(10 * time.Second)

	err = db.AutoMigrate(&User{}, &Category{}, &Article{})
	if err != nil {
		log.Error(err)
		return
	}

}
